home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C++ / Libraries / RgnMaster 1.0 / Source / Utils / Compat.c++ next >
Encoding:
Text File  |  1994-02-20  |  2.1 KB  |  94 lines  |  [TEXT/KAHL]

  1. // Compat.c++
  2.  
  3. #include <Traps.h>
  4. #include <OSUtils.h>
  5.  
  6.  
  7. #include "Compat.h"
  8.  
  9. MacEnviron gEnviron;
  10.  
  11.  
  12. #define TrapMask 0x0800
  13.  
  14. short NumToolboxTraps()
  15. {
  16.     if (NGetTrapAddress(_InitGraf, ToolTrap) ==
  17.             NGetTrapAddress(0xAA6E, ToolTrap))
  18.         return(0x0200);
  19.     else
  20.         return(0x0400);
  21. } // END NumToolboxTraps
  22.  
  23. TrapType GetTrapType(short theTrap)
  24. {
  25.     if ((theTrap & TrapMask) > 0)
  26.         return(ToolTrap);
  27.     else
  28.         return(OSTrap);
  29.  
  30. } // END GetTrapType
  31.  
  32. Boolean TrapAvailable(short theTrap)
  33. {
  34.     TrapType    tType;
  35.  
  36.     tType = GetTrapType(theTrap);
  37.     if (tType == ToolTrap)
  38.     theTrap = theTrap & 0x07FF;
  39.     if (theTrap >= NumToolboxTraps())
  40.         theTrap = _Unimplemented;
  41.  
  42.     return (NGetTrapAddress(theTrap, tType) !=
  43.             NGetTrapAddress(_Unimplemented, ToolTrap));
  44. } // END TrapAvailable
  45.  
  46. // ***************************************************************************
  47.  
  48. void CheckEnviron() {
  49.     long gestaltInfo;
  50.     SysEnvRec myEnv;
  51.     
  52.     gEnviron.gestaltAvail = TrapAvailable(_Gestalt);
  53.     gEnviron.WNEAvail     = TrapAvailable(_WaitNextEvent);
  54.     
  55.     if (gEnviron.gestaltAvail) {
  56.         // Get PROCESSOR type
  57.         Gestalt(gestaltProcessorType, &gestaltInfo);
  58.         gEnviron.cpu = gestaltInfo;
  59.         
  60.         // Get FPU availability
  61.         Gestalt(gestaltFPUType, &gestaltInfo);
  62.         gEnviron.fpu = gestaltInfo;
  63.         
  64.         // Get SYSTEM VERSION
  65.         Gestalt(gestaltSystemVersion, &gestaltInfo);
  66.         gEnviron.sysVersion = gestaltInfo;
  67.         
  68.         // Get whether COLOR QUICKDRAW is present or not
  69.         SysEnvirons(curSysEnvVers, &myEnv);
  70.         gEnviron.hasColor = myEnv.hasColorQD;
  71.         if (gEnviron.hasColor)
  72.             gEnviron.pixDepth = (**((**GetMainDevice()).gdPMap)).pixelSize;
  73.             // Equivalent to GetMainDevice^^.gdPMap^^.pixelSize in Pascal!!
  74.         else
  75.             gEnviron.pixDepth = 1;
  76.             
  77.         if (gEnviron.pixDepth < 2)
  78.             gEnviron.hasColor = FALSE;
  79.  
  80.         // Determine if we have TEMPORARY MEMORY support
  81.         Gestalt(gestaltOSAttr, &gestaltInfo);
  82.         if (BitTst(&gestaltInfo, 31-gestaltTempMemSupport))
  83.             gEnviron.hasTempMem = TRUE;
  84.         else
  85.             gEnviron.hasTempMem = FALSE;
  86.             
  87.         // Do we have an APPLE SOUND CHIP installed?
  88.         Gestalt(gestaltHardwareAttr, &gestaltInfo);
  89.         if (BitTst(&gestaltInfo, 31-gestaltHasASC))
  90.             gEnviron.hasSoundChip = TRUE;
  91.         else
  92.             gEnviron.hasSoundChip = FALSE;
  93.     }
  94. } // END CheckEnviron